using System;
using System.Collections.Generic;
using System.Text;

namespace XnaDevRu.BulletX
{
	public interface IDispatcher
	{
		CollisionAlgorithm FindAlgorithm(CollisionObject bodyA, CollisionObject bodyB, PersistentManifold sharedManifold);
		CollisionAlgorithm FindAlgorithm(CollisionObject bodyA, CollisionObject bodyB);
		PersistentManifold GetNewManifold(object bodyA, object bodyB);
		void ReleaseManifold(PersistentManifold manifold);
		void ClearManifold(PersistentManifold manifold);
		bool NeedsCollision(CollisionObject bodyA, CollisionObject bodyB);
		bool NeedsResponse(CollisionObject bodyA, CollisionObject bodyB);
		void DispatchAllCollisionPairs(OverlappingPairCache pairCache, DispatcherInfo dispatchInfo);
		PersistentManifold GetManifoldByIndex(int index);

		int ManifoldCount { get; }
	}
}
